/**
 * 
 */
package com.delta.rafg.core.database;

import java.sql.Connection;
import java.util.List;

import com.delta.rafg.core.database.impl.AGenericDataSource.GenericDataSourceColumnInfo;

/**
 * @author D9127520
 *
 */
public interface IGenericDataSource {
	
	public String getPropertyIdentifier();
	
	public String getSchemaName();
	
	public List<String> getTableNames();
	
	public List<GenericDataSourceColumnInfo> getColumns(String tableName);
	
	public List<String> getIndexColumns(String tableName);
	
	public Connection getSqlConnection();
	
	/**
	 * Returns tables that have been changed since the last time this method was called.
	 * @return Array of changed tables.  Null if nothing has changed.
	 */
	public String[] getChangedTables();
	
	public List<List<GenericDataSourceColumnInfo>> getColumnData(String tableName, List<String> columns);
	
	/** 
	 * Return true if this generic datahandler is to be synchonized by the database synchro engine
	 * 
	 * @return true/false
	 */
	public boolean isSynchronizable();
	
}

